#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>

using namespace std;

//int n, m;
//double dp[1000][1000];
//
//
//int main1() {
//    dp[0][0] = 1;
//    cin >> n >> m;
//
//    for (int i = 1; i <= n; i++)
//    {
//        dp[i][0] = dp[i - 1][0] * 0.2;
//        for (int j = 1; j <= i; j++)
//        {
//            dp[i][j] = dp[i - 1][j - 1] * 0.8 + dp[i - 1][j] * 0.2;
//        }
//    }
//
//    printf("%.4lf", dp[n][m]);
//    return 0;
//}
//
//int main2()
//{
//    vector<int> v = { 2,3,4,1,5,2,4 };
//    sort(v.begin(), v.end());
//    for (auto e : v)
//    {
//        cout << e << " ";
//    }
//	return 0;
//}
//
//int main5() {
//    int n, l, r;
//    cin >> n >> l >> r;
//    int sum = 0;
//    vector<int> v(n);
//    for (int i = 0; i < n; i++)
//    {
//        cin >> v[i];
//    }
//    sort(v.begin(), v.end());
//
//    for (int i = 0; i < n; i++)
//    {
//        for (int j = i + 1; j < n; j++)
//        {
//            if (abs(v[j] - v[i]) <= r && abs(v[j] - v[i]) >= l)
//            {
//                sum++;
//            }
//
//        }
//    }
//    cout << sum << endl;
//
//    return 0;
//}
typedef long long ll;

ll N = 1e9 + 7;
int n;
int main() {
    cin >> n;
    ll ab = 1, ac = 2;
    ll x;

    for (int i = 1; i < n; i++)
    {
        x = ab;
        ab = (2 * ac + 1) % N;
        ac = (2 + 2 * ac + x) % N;
    }

    cout << ab << " " << ac << endl;

    return 0;
}